home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 2 / Atari Mega Archive CD - Volume 2.iso / minix / up1510b.tgz / up1510b / src / commands / clr.c < prev    next >
C/C++ Source or Header  |  1990-07-23  |  2KB  |  79 lines

  1. /* clr - clear the screen        Author: Andy Tanenbaum */
  2.  
  3. /* This version modified by Rich Heffel */
  4.  
  5. /* Use termcap for normal, reverse, clear-line. */
  6.  
  7. #include <sys/types.h>
  8. #include <sys/stat.h>
  9. #include <sgtty.h>
  10. #include <signal.h>
  11. #include <stdio.h>
  12.  
  13. #define reverse()    write(1, SO, strlen(SO))    /* reverse video */
  14. #define normal()    write(1, SE, strlen(SE))    /* undo reverse() */
  15. #define clearln()    write(1,"\r",1); \
  16.         write(1, CD, strlen(CD))    /* clear line */
  17.  
  18. extern char *getenv();
  19. extern char *tgetstr();
  20. extern char *index();
  21.  
  22. #define  TC_BUFFER  1024    /* Size of termcap(3) buffer     */
  23.  
  24. struct sgttyb ttymode;        /* and the terminal modes */
  25. char *SO, *SE, *CD;
  26. char buffer[TC_BUFFER];
  27. char *term;
  28. char clear[30];
  29. char *p = &clear[0];
  30.  
  31.  
  32. main()
  33. {
  34.  
  35.   get_termcap();
  36.  
  37.   /* Clear the screen  */
  38.   normal();
  39.   clearln();
  40.   printf("%s", clear);
  41.  
  42.   exit(0);
  43. }
  44.  
  45. get_termcap()
  46. {
  47.   static char termbuf[50];
  48.   extern char *tgetstr(), *getenv();
  49.   char *loc = termbuf;
  50.   char entry[1024];
  51.  
  52.   
  53.   if ((term = getenv("TERM")) == NULL) {
  54.     Error("$TERM not defined");
  55.   }
  56.   if (tgetent(entry, getenv("TERM")) <= 0) {
  57.         Error("Unknown terminal.");
  58.   }
  59.   if (tgetent(buffer, term) != 1) {
  60.     Error("No termcap definition for $TERM");
  61.   }
  62.   if ((tgetstr("cl", &p)) == NULL) {
  63.     Error("No clear (cl) entry for $TERM");
  64.   }
  65.   SO = tgetstr("so", &loc);
  66.   SE = tgetstr("se", &loc);
  67.   CD = tgetstr("cd", &loc);
  68.  
  69.   if (CD == (char *) 0) CD = "             \r";
  70.  
  71. }
  72.  
  73. Error(str)
  74. char *str;
  75. {
  76.   fprintf(stderr, "clr: %s\n", str);
  77.   exit(1);
  78. }
  79.